package model

import (
	"time"

	"gorm.io/gorm"
)

// Model 基础模型结构体
// @Description 所有模型的基础结构，包含ID和时间信息
type Model struct {
	// 记录唯一标识ID
	Id int `json:"id" gorm:"primaryKey;autoIncrement" example:"1"`
	// 记录创建时间，Unix时间戳
	CreateTime int32 `json:"createTime" gorm:"comment:创建时间" example:"1617235200"`
	// 记录最后更新时间，Unix时间戳
	UpdateTime int32 `json:"updateTime" gorm:"comment:更新时间" example:"1617235200"`
	// 软删除标记，0表示未删除，删除时设置为删除时间戳
	DeleteTime int32 `json:"deleteTime" gorm:"index;default:0;comment:删除时间，0表示未删除" example:"0"`
}

func (model *Model) BeforeCreate(tx *gorm.DB) (err error) {
	currentTime := int32(time.Now().Unix())
	if model.CreateTime == 0 {
		model.CreateTime = currentTime
	}
	if model.UpdateTime == 0 {
		model.UpdateTime = currentTime
	}
	return
}

func (model *Model) BeforeUpdate(tx *gorm.DB) (err error) {
	model.UpdateTime = int32(time.Now().Unix())
	return
}
